package com.imooc.service;

import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;
import com.imooc.pojo.vo.CommentLevelCountsVO;
import com.imooc.pojo.vo.ShopcartVO;
import com.imooc.utils.PagedGridResult;
import java.util.List;

/**
 * @ClassName: ItemService
 * @Package: com.imooc.service
 * @Description:
 * @Date: 2021/7/7 15:18
 * @Author: sunzheng@beiming.com
 */
public interface ItemService {

  /**
   * 根据商品id查询详情
   *
   * @param itemId
   * @return
   */
  public Items queryItemById(String itemId);

  /**
   * 根据商品id查询商品图片列表
   *
   * @param itemId
   * @return
   */
  public List<ItemsImg> queryItemImgList(String itemId);

  /**
   * 根据商品id查询商品规格
   *
   * @param itemId
   * @return
   */
  public List<ItemsSpec> queryItemSpecList(String itemId);

  /**
   * 根据商品id查询商品参数
   *
   * @param itemId
   * @return
   */
  public ItemsParam queryItemParam(String itemId);

  /**
   * 根据商品id查询商品的评价等级数量
   *
   * @param itemId
   */
  public CommentLevelCountsVO queryCommentCounts(String itemId);

  /**
   * 根据商品id查询商品的评价(分页)
   *
   * @param itemId
   * @param level
   * @return
   */
  public PagedGridResult queryPagedComments(String itemId, Integer level, Integer page,
      Integer pageSize);

  /**
   * 搜索商品列表
   *
   * @param keywords
   * @param sort
   * @param page
   * @param pageSize
   * @return
   */
  public PagedGridResult searchItems(String keywords, String sort, Integer page, Integer pageSize);

  /**
   * 根据分类id搜索商品列表
   *
   * @param catId
   * @param sort
   * @param page
   * @param pageSize
   * @return
   */
  public PagedGridResult searchItems(Integer catId, String sort, Integer page, Integer pageSize);

  /**
   * 根据规格ids查询最新的购物车中商品数据(用于刷新渲染购物车中的商品数据)
   *
   * @param specIds
   * @return
   */
  public List<ShopcartVO> queryItemsBySpecIds(String specIds);

  /**
   * 根据商品规格id，获取规格对象的具体信息
   *
   * @param specId 规范标识
   * @return {@link ItemsSpec}
   */
  public ItemsSpec queryItemSpecById(String specId);

  /**
   * 根据商品id，查询商品图片主图url
   *
   * @param itemId 项id
   * @return {@link String}
   */
  public String queryItemMainImgById(String itemId);

  /**
   * 减少库存
   *
   * @param specId    规范标识
   * @param buyCounts 购买数量
   */
  public void decreaseItemSpecStock(String specId, int buyCounts);
}
